package com.transpot.controller.sys;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.transpot.entry.driver.Driver;
import com.transpot.entry.user.Admin;
import com.transpot.service.driver.DriverService;
import com.transpot.service.user.AdminService;
import com.transpot.utils.R;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 系统登录功能的Controller
 */
@RestController
@RequestMapping("/login")
public class LoginController {
    @Autowired
    private AdminService adminService;
    @Autowired
    private DriverService driverService;

    @GetMapping("/userLogin")
    public R login(String username, String password) {
        //如果用户名为空,直接返回
        if (StringUtils.isBlank(username)) {
            return R.fail("用户名不能为空");
        }
        //如果密码为空，直接返回
        if (StringUtils.isBlank(password)) {
            return R.fail("密码不能为空");
        }
        //都不为空时进入登录逻辑
        /*登录逻辑为，根据用户名和密码查找是否有一个用户与该用户名和密码都相同，
          优先判断管理员，如果管理员中未找到，则去查找司机
         */
        //创建管理员的条件查询对象
        LambdaQueryWrapper<Admin> adminLambdaQueryWrapper = new LambdaQueryWrapper<>();
        //添加查询条件，同时与用户名和密码相同，即看是否能查到与该用户名和该密码相同的用户
        adminLambdaQueryWrapper.eq(Admin::getUsername, username).eq(Admin::getPassword, password);
        //执行查询
        Admin admin = adminService.getOne(adminLambdaQueryWrapper);
        //查到满足条件的管理员
        if (admin != null) {
            return R.success("登录成功！", admin);
        } else {  //未查到满足条件的管理员，则查找司机
            //创建司机条件查询对象
            LambdaQueryWrapper<Driver> driverLambdaQueryWrapper = new LambdaQueryWrapper<>();
            //添加查询条件，同时与用户名和密码相同，即看是否能查到与该用户名和该密码相同的用户
            driverLambdaQueryWrapper.eq(Driver::getUsername, username).eq(Driver::getPassword, password);
            //执行查询
            Driver driver = driverService.getOne(driverLambdaQueryWrapper);
            if (driver != null) {
                return R.success("登录成功！", driver);
            } else {
                return R.fail("系统错误，请联系管理员");
            }
        }
    }
}
